Salesforce-এ SOQL, SOSL, এবং DML অপারেশনের উপর কিছু নির্দিষ্ট Governor Limits রয়েছে, যা Apex কোড চালানোর সময় নির্ধারিত রিসোর্সের সীমা নিয়ন্ত্রণ করে। এসব লিমিট নিশ্চিত করে যে Apex কোড মাল্টি-টেন্যান্ট আর্কিটেকচারের মধ্যে ভারসাম্য রক্ষা করে এবং অতিরিক্ত রিসোর্স ব্যবহারের কারণে অন্য ব্যবহারকারীদের পারফরম্যান্সের উপর প্রভাব না পড়ে।
SOQL (Salesforce Object Query Language) Limits
SOQL কুয়েরি চালানোর সময় কিছু নির্দিষ্ট সীমাবদ্ধতা মেনে চলতে হয়, যা নিম্নরূপ:
SOQL Queries per Transaction:
- প্রতি ট্রানজ্যাকশনে সর্বাধিক ১০০টি SOQL কুয়েরি চালানো যায়। (সিঙ্ক্রোনাস কনটেক্সট)
- অ্যাসিঙ্ক্রোনাস (যেমন Future মেথড) কনটেক্সটে সর্বাধিক ২০০টি SOQL কুয়েরি চালানো যায়।
Query Rows Returned:
- প্রতি SOQL কুয়েরিতে সর্বাধিক ৫০,০০০টি রো (row) রিটার্ন করা যায়।
- এটি বড় ডেটাসেটের ক্ষেত্রে প্রয়োজনীয় ডেটা ফিল্টারিং এবং সীমাবদ্ধ করা নিশ্চিত করে।
Total Number of Records Retrieved:
- একটি ট্রানজ্যাকশনে মোট রিটার্ন হওয়া রেকর্ড সংখ্যা ৫০,০০০ এর বেশি হতে পারে না।
উদাহরণ: SOQL Limits ব্যবহারের ক্ষেত্রে
List<Account> accounts = [SELECT Id, Name FROM Account LIMIT 100];
- এখানে
LIMITক্লজ ব্যবহার করে SOQL কুয়েরির মাধ্যমে ডেটা সীমাবদ্ধ করা হয়েছে।
SOSL (Salesforce Object Search Language) Limits
SOSL কুয়েরি চালানোর সময় কিছু নির্দিষ্ট সীমাবদ্ধতা আছে, যা নিম্নরূপ:
- SOSL Queries per Transaction:
- প্রতি ট্রানজ্যাকশনে সর্বাধিক ২০টি SOSL কুয়েরি চালানো যায়।
- Records Returned by SOSL:
- প্রতি SOSL কুয়েরিতে একসাথে ২০০০টি রেকর্ড রিটার্ন করা যায়।
- বড় ডেটাসেট হলে অতিরিক্ত রেকর্ড ফেচ করতে
OFFSETবা পেজিনেশন ব্যবহার করতে হতে পারে।
উদাহরণ: SOSL Limits ব্যবহারের ক্ষেত্রে
List<List<SObject>> searchResults = [FIND 'Tech' IN ALL FIELDS RETURNING Account(Name), Contact(FirstName, LastName) LIMIT 2000];
- এখানে
LIMITব্যবহার করে কুয়েরি দ্বারা প্রাপ্ত রেকর্ড সংখ্যা ২০০০ এর মধ্যে সীমাবদ্ধ করা হয়েছে।
DML (Data Manipulation Language) Limits
DML অপারেশন চালানোর সময় কিছু নির্দিষ্ট সীমাবদ্ধতা আছে, যা নিম্নরূপ:
DML Statements per Transaction:
- প্রতি ট্রানজ্যাকশনে সর্বাধিক ১৫০টি DML স্টেটমেন্ট চালানো যায়।
- বড় ডেটাসেট নিয়ে কাজ করার সময় Bulk DML ব্যবহার করে DML স্টেটমেন্টের সংখ্যা কমানো সম্ভব।
Total DML Rows Processed:
- প্রতি ট্রানজ্যাকশনে সর্বাধিক ১০,০০০টি রেকর্ডে DML অপারেশন চালানো যায়।
- বড় ডেটাসেটের ক্ষেত্রে
Batch ApexবাQueueable Apexব্যবহার করে রেকর্ড প্রক্রিয়াকরণ করতে হবে।
Nesting DML Operations:
- এক DML অপারেশনের ভিতরে আরেকটি DML অপারেশন এড়ানো উচিত। এটি গভর্নর লিমিট অতিক্রম করতে পারে।
উদাহরণ: DML Limits ব্যবহারের ক্ষেত্রে
List<Account> accountList = new List<Account>();
for (Integer i = 1; i <= 10000; i++) {
accountList.add(new Account(Name = 'Account ' + i));
}
// Bulk DML Operation to stay within DML row limits
insert accountList;
- এখানে
accountListএ একবারে ১০,০০০টি রেকর্ড ইন্সার্ট করা হয়েছে।
SOQL, SOSL, এবং DML Limits এর সংক্ষিপ্ত তালিকা
| অপারেশন | লিমিট | বিবরণ |
|---|---|---|
| SOQL Queries | ১০০ (সিঙ্ক্রোনাস), ২০০ (অ্যাসিঙ্ক্রোনাস) | প্রতি ট্রানজ্যাকশনে সর্বাধিক SOQL কুয়েরি সংখ্যা |
| SOQL Query Rows | ৫০,০০০ রো | একটি ট্রানজ্যাকশনে সর্বাধিক রিটার্ন হওয়া রো সংখ্যা |
| SOSL Queries | ২০টি | প্রতি ট্রানজ্যাকশনে সর্বাধিক SOSL কুয়েরি সংখ্যা |
| SOSL Query Rows | ২০০০টি | প্রতি SOSL কুয়েরিতে সর্বাধিক রিটার্ন হওয়া রো সংখ্যা |
| DML Statements | ১৫০টি | প্রতি ট্রানজ্যাকশনে সর্বাধিক DML স্টেটমেন্ট সংখ্যা |
| DML Rows Processed | ১০,০০০টি | প্রতি ট্রানজ্যাকশনে সর্বাধিক DML প্রক্রিয়াকৃত রেকর্ড সংখ্যা |
Governor Limits অতিক্রম এড়ানোর কৌশল
- Bulk SOQL & DML ব্যবহার করুন: একাধিক রেকর্ডে একত্রে অপারেশন চালাতে Bulk DML ও SOQL ব্যবহার করুন, যা গভর্নর লিমিট বজায় রাখতে সহায়ক।
- Efficient Querying: SOQL এবং SOSL কুয়েরির মাধ্যমে প্রয়োজনীয় ফিল্ডগুলোর উপর সীমাবদ্ধতা আরোপ করুন এবং ডেটা ফিল্টার করুন।
- Batch Apex ও Queueable Apex ব্যবহার করুন: বড় ডেটাসেটের জন্য Batch Apex এবং Queueable Apex ব্যবহার করে ট্রানজ্যাকশন ভেঙে নিন।
- Avoid Nested DML Operations: DML অপারেশনের ভিতরে আরেকটি DML অপারেশন এড়িয়ে চলুন।
- Use @future and Queueable Methods: দীর্ঘ প্রক্রিয়াকরণ বা বড় ডেটাসেটের জন্য
@futureএবং Queueable মেথড ব্যবহার করুন।
সারসংক্ষেপ
- SOQL, SOSL, এবং DML অপারেশনের উপর Salesforce এর নির্ধারিত লিমিট রয়েছে।
- Governor Limits মেনে Apex কোড লিখলে অ্যাপ্লিকেশনের স্থায়িত্ব ও পারফরম্যান্স বৃদ্ধি পায়।
- Bulk DML, SOQL, এবং Efficient Querying এর মাধ্যমে Governor Limits লঙ্ঘন না করেও বড় ডেটাসেট সফলভাবে পরিচালনা করা যায়।
Governor Limits মেনে Apex কোড লেখা Salesforce প্ল্যাটফর্মের জন্য অত্যন্ত গুরুত্বপূর্ণ, যা মাল্টি-টেন্যান্ট পরিবেশে ডেটা ম্যানিপুলেশন ও ডেটা প্রসেসিং কার্যকরভাবে পরিচালনা করতে সহায়ক।
Read more